/**系统配置 */
export interface IWechatConfig{
    Wechat:IWechatConfigItem[];
}
export interface IWechatConfigItem{
    appid?:string;
    OAappid?:string;
    OAsecret?:string;

    smallAppid?:string;
    smallSecret?:string;

    mid?:string;
    secret?:string;
    secretV3?:string;
    secretV2?:string;
    apiclient_cert_no?:string;
    callbackUrl?:string;
    /**平台手续费费率 */
    feeRatio?:number;
    shunt?:boolean;
    shuntList?:IWechatShuntItem[],
}
export interface IWechatShuntItem{
    /** -分账接收方类型:        MERCHANT_ID：商户号（mch_id或者sub_mch_id）
            PERSONAL_OPENID：个人openid */
    type:string;
    /**分账接收方账号 */
    account:string;
    /**分账金额 */
    amount:number;
    /**分账描述 */
    description:string;

    /**是否激活 */
    isEnable:boolean;

    /**分账比率 */
    proportion:number;
}


/**微信错误码 */
export enum ERR_CODE_WECHAT{
    
}

export interface IWechatErrResult{
    code:string;
    message:string;
}

export interface IPlaceJSAPI{
    /**应用ID */
    appid?:string;
    /**直连商户号 */
    mchid?:string;
    /**商品描述 */
    description:string;
    /**商户订单号 */
    out_trade_no:string;
    /**交易结束时间 */
    time_expire?:string;
    /**附加数据 在查询API和支付通知中原样返回，可作为自定义参数使用，实际情况下只有支付完成状态才会返回该字段。*/
    attach?:string;
    /** 通知地址*/
    notify_url:string;
    /**订单优惠标记 */
    goods_tag?:string;
    /**订单金额 */
    amount:IAmountData;
    /**支付者 */
    payer:IPayer;   
    /** 结算信息*/
    settle_info?:ISettleInfo;
}
/**前端支付参数 */
export interface IJsapiClientPay{
    appId:string;
    timeStamp:number;
    nonceStr:string;
    package:string;
    signType:string;
    paySign?:string;
}
/**下单结果 */
export interface IPlaceResult{
    /**预支付交易会话标识:用于后续接口调用中使用，该值有效期为2小时 */
    prepay_id:string;
}

/**订单金额信息 */
export interface IAmountData{
    /** 总金额*/
    total:number;
    /** 货币类型:CNY：人民币，境内商户号仅支持人民币。*/
    currency?:string;
}
/**支付者信息 */
export interface IPayer{
    openid:string;
}
export interface ISettleInfo{
    /**是否指定分账 */
    profit_sharing:boolean;
}

/**查询 (商户订单号)*/
export interface IWechatQueryReq{
    out_trade_no:string;
}

/**微信订单状态 */
export enum WechatTradeState{
    /**支付成功 */
    SUCCESS = "SUCCESS",
    /**订单号重复 */
    INVALID_REQUEST = "INVALID_REQUEST",
    /**订单已经支付 */
    ORDERPAID = "ORDERPAID",
    /**转入退款 */
    REFUND = "REFUND",
    /**未支付 */
    NOTPAY = "NOTPAY",
    /**已关闭 */
    CLOSED = "CLOSED",
    /** 已撤销（仅付款码支付会返回）*/
    REVOKED = "REVOKED",
    /**用户支付中（仅付款码支付会返回） */
    USERPAYING = "USERPAYING",
    /** 支付失败（仅付款码支付会返回）*/
    PAYERROR = "PAYERROR",
    /**处理中 */
    PROCESSING = "PROCESSING",
    /**退款异常*/
    ABNORMAL = "ABNORMAL",
    /**商户无权限 */
    NO_AUTH = "NO_AUTH",
    /**分账金额不足 */
    NOT_ENOUGH = "NOT_ENOUGH",
    /**对同笔订单分账频率过高 */
    FREQUENCY_LIMITED = "FREQUENCY_LIMITED",
    /** 订单号格式不正确*/
    PARAM_ERROR = "PARAM_ERROR",
    /**分账完成 */
    FINISHED = "FINISHED",
}
/**查询结果 */
export interface IWechatQueryResponse{
    appid?:string;
    mchid?:string;
    /**商户订单号 */
    out_trade_no?:string;
    /**微信支付订单号 */
    transaction_id?:string;
    /** 交易类型*/
    trade_type?:string;
    /** 交易状态*/
    trade_state?:string;
    /** 交易状态描述*/
    trade_state_desc?:string;
    /** 付款银行*/
    bank_type?:string;
    /** 附加数据*/
    attach?:string;
    /**支付完成时间 */
    success_time?:string;
    /**支付者信息 */
    payer?:IPayer;    
    /** 订单金额信息，当支付成功时返回该字段。*/
    amount?:IAmountData;
}
export interface IWechatRefundAmountData{
    /**退款金额，单位为分，只能为整数，不能超过原订单支付金额。 */
    refund:number;
    /**原支付交易的订单总金额，单位为分，只能为整数。 */
    total:number;
    /**退款币种 CNY */
    currency:string;
}
/**退款 */
export interface IWechatRefundReq{
    /**商户订单号*/
    out_trade_no:string;
    /**商户退款单号 */
    out_refund_no?:string;
    /**退款原因 */
    reason:string;
    /**退款结果回调url */
    notify_url?:string;
    /**金额信息 */
    amount:IWechatRefundAmountData;
}

export interface IWechatRefundReqResult{
    refund_id:string;
    out_refund_no:string;
    transaction_id:string;
    out_trade_no:string;
    channel:string;
    user_received_account:string;
    success_time:string;
    create_time:string;
    status:string;
    funds_account:string;
    amount:Object;
}

/**分账请求 */
export interface IShuntReqData{
    appid:string;
    transaction_id:string;
    out_order_no:string;
    receivers:IShuntReceiversItem[];
    unfreeze_unsplit:boolean;
}
export interface IShuntReqResult{
    transaction_id?:string;
    out_order_no?:string;
    order_id?:string;
    state:string;

    receivers?:string;
    addtime?:number;
    finishTime?:number;
    id?:number;
}
export interface IShuntAmount{
    transaction_id:string;
    unsplit_amount:number;
}
/**分账接受信息 */
export interface IShuntReceiversItem{
    type:string;
    account:string;
    amount:number;
    description:string;
}

export interface IWechatToken{
    /**获取到的凭证 */
    access_token:string;
    /**凭证有效时间，单位：秒。目前是7200秒之内的值。 */
    expires_in:string;
    /**用户刷新access_token */
    refresh_token?:string;
    /**用户唯一标识，请注意，在未关注公众号时，用户访问公众号的网页，也会产生一个用户和公众号唯一的OpenID */
    openid?:string;
    /**用户授权的作用域，使用逗号（,）分隔 */
    scope?:string;
}

export interface IWechatLoginData{
    /** 会话密钥*/
    session_key:string;
    /**用户在开放平台的唯一标识符，若当前小程序已绑定到微信开放平台帐号下会返回，详见 UnionID 机制说明 */
    unionid:string;
    /**错误信息 */
    errmsg:string;
    /**用户唯一标识 */
    openid:string;
    /**错误码 */
    errcode:number;
}